//
//  CZHomeViewController.swift
//  项目框架
//
//  Created by yang on 16/2/25.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
import SVProgressHUD
/*
上拉更多的
第一个问题: 什么时候去加载数据? 没有滑到最后一个的时候,就取让它请求
第二个问题: 显示在哪里? -- 添加在FooterView/或者添加到最后一个cell上


*/

/*
下拉刷新
界面: 视图放置在哪里?
功能: 什么时候出来,什么又回去? 网络数据加载完成之后出来,显示一会儿之后回去
*/


let CZHomeViewControllerReuserIdenfiter = "CZHomeViewControllerReuserIdenfiter"
class CZHomeViewController: CZBaseTableViewController {

    
    //常见viewmodel的实例
    var statusListViewModel  :CZStatusListViewModel?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        
        
        visitor?.setInfo("关注一些人，回这里看看有什么惊喜", image: "visitordiscover_feed_image_house", animation: true)
        
        
        //判断是否登录
        if isLogin{
        
            statusListViewModel = CZStatusListViewModel()
            
//            statusListViewModel?.loadData({ () -> () in
//                
//                //数据加载完成之后刷新界面
//                self.tableView.reloadData()
//            })
            
            //加载数据
            loadData()
            
            //注册cell
            
            tableView.registerClass(CZHomeTableViewCell.self, forCellReuseIdentifier: CZHomeViewControllerReuserIdenfiter)
            
            
            //设置自动行高
            tableView.rowHeight = UITableViewAutomaticDimension
            
            //设置预估行高，必须与自动行高配套使用
            tableView.estimatedRowHeight = 85
            
            tableView.tableFooterView = pullView
            
            //添加视图
            tableView.addSubview(refreshView)
            
            refreshView.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.TouchUpInside)
        }
        
        
    }
    
    func loadData(){
    
        SVProgressHUD.show()
        // 上提更多,需要把 since_id = 0
        var since_id = statusListViewModel?.array.first?.statusModel?.id ?? 0
        
        //获取max_id
        var max_id = 0
        
        if pullView.isAnimating(){
        
            since_id  = 0
            //拿到最后一条数据
            max_id = statusListViewModel?.array.last?.statusModel?.id ?? 0
            
            max_id -= 1
        
        }
        
        statusListViewModel?.loadData(since_id, max_id: max_id, finish: { (count : Int) -> () in
            

            
            self.tableView.reloadData()
            
            //菊花转的时候,肯定是上体更多
            if !self.pullView.isAnimating(){
                //显示刷新提示
                self.showNewCount(count)
            
            }
            // 还原加载标记
            self.pullView.stopAnimating()
            
            //菊花消失
            SVProgressHUD.dismiss()
            
            self.refreshView.endRefreshing()

            })
    
    }
    //显示刷新提示
    private func  showNewCount(count: Int){
    
        //创建视图
        let showMessageLabel = UILabel(frame: CGRectMake(0,64 - 44, UIScreen.mainScreen().bounds.width,44))
        
        //设置背景色
        showMessageLabel.backgroundColor = UIColor.orangeColor()
        
        if count > 0 {
            
            showMessageLabel.text = "更新了\(count)条数据"
        }else{
        
            showMessageLabel.text = "暂无更新"
        }
        
        showMessageLabel.textColor = UIColor.blackColor()
        showMessageLabel.font = UIFont.systemFontOfSize(16)
        showMessageLabel.textAlignment = .Center
        
        //添加到视图中
        self.navigationController?.view.insertSubview(showMessageLabel, belowSubview: (navigationController?.navigationBar)!)
        
        //添加一个动画
        UIView.animateWithDuration(2, animations: { () -> Void in
            
            showMessageLabel.transform = CGAffineTransformMakeTranslation(0, 44)
            }) { (_) -> Void in
                
                
                //当动画完成之后隐藏
                UIView.animateWithDuration(2, animations: { () -> Void in
                    showMessageLabel.transform = CGAffineTransformIdentity
                    }, completion: { (_) -> Void in
                        
                        //隐藏或销毁
                        showMessageLabel.removeFromSuperview()
                })
        }
        
    }
    
    //懒加载（菊花）
    private lazy var pullView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    private lazy var refreshView: CZRefreshView = CZRefreshView()
}

//数据源方法
extension CZHomeViewController{

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return  statusListViewModel?.array.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(CZHomeViewControllerReuserIdenfiter, forIndexPath: indexPath) as! CZHomeTableViewCell
        
        cell.statusViewModel = statusListViewModel?.array[indexPath.row]
        
        
        if indexPath.row == ((statusListViewModel?.array.count)! - 1) && !pullView.isAnimating(){
            //先转在加载数据
            pullView.startAnimating()
            
            loadData()
        
        }
        return cell
        
        
    }
}
